package com.dareway.reflex;

import java.lang.reflect.Method;

public class Class_forname {
    //    通过调用getMethod()方法，
    //    我们可以获取到类中所有声明为public的方法，得到一个Method对象，
    //    我们可以通过Method对象的invoke()方法
    public static void main(String[] args) throws ReflectiveOperationException {
        Class<?> clazz = Class.forName("com.dareway.reflex.Student");
        Object instance = clazz.newInstance();   //创建出学生对象
        Method method = clazz.getMethod("test", String.class);   //通过方法名和形参类型获取类中的方法
        method.invoke(instance, "what's up");   //通过Method对象的invoke方法来调用方法

        Method privateMethod = clazz.getDeclaredMethod("testpr", String.class);   //通过方法名和形参类型获取类中的方法
        System.out.println(privateMethod.getName());   //获取方法名称
        System.out.println(privateMethod.getReturnType());   //获取返回值类型

        Method arrMethod = clazz.getDeclaredMethod("testArr", String[].class);
        System.out.println(privateMethod.getName());   //获取方法名称
        System.out.println(privateMethod.getReturnType());   //获取返回值类型
    }
}
